Skip to content

feat: add finger training practice mode (@OmTiwariPandey)#8198

Open
OmTiwariPandey wants to merge 5 commits into
monkeytypegame:masterfrom
OmTiwariPandey:feat/finger-training
Open

feat: add finger training practice mode (@OmTiwariPandey)#8198
OmTiwariPandey wants to merge 5 commits into
monkeytypegame:masterfrom
OmTiwariPandey:feat/finger-training

Conversation

@OmTiwariPandey

@OmTiwariPandey OmTiwariPandey commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Description

I was practicing on my account (uname: itsom) and figured I was not hitting my left
pinky as much (words containing q and z were simply not appearing), so I
constantly felt like I wasn't training that finger. I'm sure others suffer
from the same, so I built a finger training mode: a modal (reachable from the
commandline and from a card on the settings page) where you pick the fingers
you want to train and optionally how often a training word appears (every
word, every 2nd, every 3rd).

  • Words are picked in per-letter buckets from the current language, so rare
    letters (like q and z for left pinky) get an equal share instead of being
    crowded out by common ones (like a). Short letter drills fill in when the language
    has few or no words for a letter.
  • Letters per finger come from the active layout via the existing
    layoutKeyToKeycode converter.
  • Training survives test restarts; stopping it, changing the mode, or
    reloading the page all restore your previous settings.
  • A notice above the test shows which fingers are being trained.
  • Added 20 unit tests (finger mapping incl. iso/matrix, scoring, pool
    building, drills, frequency mixing).
  • Known limitation: angle-mod iso layouts get standard physical-column
    fingering, since layout JSONs can't express angle-mod intent.

Checks

  • Make sure the PR title follows the Conventional Commits standard. (https://www.conventionalcommits.org for more info)
  • Make sure to include your GitHub username prefixed with @ inside parentheses at the end of the PR title.

Closes #

@monkeytypegeorge monkeytypegeorge added the frontend User interface or web stuff label Jul 5, 2026
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Continuous integration check(s) failed. Please review the failing check's logs and make the necessary changes.

@github-actions github-actions Bot added the waiting for update Pull requests or issues that require changes/comments before continuing label Jul 6, 2026
@github-actions github-actions Bot removed the waiting for update Pull requests or issues that require changes/comments before continuing label Jul 6, 2026
@OmTiwariPandey

Copy link
Copy Markdown
Contributor Author

I'll solve the conflicts but @fehmer @Miodec what do you guys think of this?

@Miodec

Miodec commented Jul 7, 2026

Copy link
Copy Markdown
Member

Seems to me like it essentially does what words filter already does?

@OmTiwariPandey

Copy link
Copy Markdown
Contributor Author

eh, well, kinda. I suggest you still take a look at the PR locally. It does what sorta can be achieved via word filter, however, I see it less as a replacement for word filter and more as a guided training layer on top of the current language/layout. The user chooses “train left pinky” instead of manually building and maintaining a q/z/a/etc word filter. Thought it would be cool to have.

@OmTiwariPandey

Copy link
Copy Markdown
Contributor Author

Some more things I noticed: the custom word filter only generates one set at a time and restarting the test doesn't change the word set. not with the finger training thing. plus the users will have better ease of use. What do you think of adding like a beta program, to test features like this? cuz I think users would be a better judge than people who code. well obviously we use the product too but yk, the scale would be larger. Sorry for the pings but what do you think? @Miodec @fehmer?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

frontend User interface or web stuff

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants